gtk_widget_queue_resize_no_redraw
gtk_widget_realize
gtk_widget_region_intersect
+gtk_widget_register_window
gtk_widget_remove_accelerator
gtk_widget_remove_mnemonic_label
gtk_widget_render_icon
gtk_widget_unmap
gtk_widget_unparent
gtk_widget_unrealize
+gtk_widget_unregister_window
gtk_widget_unset_state_flags
gtk_widget_insert_action_group
#ifdef GDK_WINDOWING_WIN32
priv->event_window = gdk_window_new (window,
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->event_window, button);
+ gtk_widget_register_window (widget, priv->event_window);
}
static void
if (priv->event_window)
{
- gdk_window_set_user_data (priv->event_window, NULL);
+ gtk_widget_unregister_window (widget, priv->event_window);
gdk_window_destroy (priv->event_window);
priv->event_window = NULL;
}
&attributes,
attributes_mask);
- gdk_window_set_user_data (priv->arrow_win[i], widget);
+ gtk_widget_register_window (widget, priv->arrow_win[i]);
}
priv->arrow_prelight = 0x0;
}
{
if (priv->arrow_win[i])
{
- gdk_window_set_user_data (priv->arrow_win[i], NULL);
+ gtk_widget_unregister_window (GTK_WIDGET (calendar), priv->arrow_win[i]);
gdk_window_destroy (priv->arrow_win[i]);
priv->arrow_win[i] = NULL;
}
priv->main_win = gdk_window_new (gtk_widget_get_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->main_win, widget);
+ gtk_widget_register_window (widget, priv->main_win);
calendar_realize_arrows (GTK_CALENDAR (widget));
}
if (priv->main_win)
{
- gdk_window_set_user_data (priv->main_win, NULL);
+ gtk_widget_unregister_window (widget, priv->main_win);
gdk_window_destroy (priv->main_win);
priv->main_win = NULL;
}
swatch->priv->event_window =
gdk_window_new (window,
&attributes, attributes_mask);
- gdk_window_set_user_data (swatch->priv->event_window, widget);
+ gtk_widget_register_window (widget, swatch->priv->event_window);
}
static void
if (swatch->priv->event_window)
{
- gdk_window_set_user_data (swatch->priv->event_window, NULL);
+ gtk_widget_unregister_window (widget, swatch->priv->event_window);
gdk_window_destroy (swatch->priv->event_window);
swatch->priv->event_window = NULL;
}
window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (window, darea);
+ gtk_widget_register_window (widget, window);
gtk_widget_set_window (widget, window);
gtk_style_context_set_background (gtk_widget_get_style_context (widget),
icon_info->window = gdk_window_new (gtk_widget_get_window (widget),
&attributes,
attributes_mask);
- gdk_window_set_user_data (icon_info->window, widget);
+ gtk_widget_register_window (widget, icon_info->window);
gtk_widget_queue_resize (widget);
}
&attributes,
attributes_mask);
- gdk_window_set_user_data (priv->text_area, entry);
+ gtk_widget_register_window (widget, priv->text_area);
if (attributes_mask & GDK_WA_CURSOR)
g_object_unref (attributes.cursor);
if (priv->text_area)
{
- gdk_window_set_user_data (priv->text_area, NULL);
+ gtk_widget_unregister_window (widget, priv->text_area);
gdk_window_destroy (priv->text_area);
priv->text_area = NULL;
}
window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
gtk_widget_set_window (widget, window);
- gdk_window_set_user_data (window, widget);
+ gtk_widget_register_window (widget, window);
}
else
{
priv->event_window = gdk_window_new (window,
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->event_window, widget);
+ gtk_widget_register_window (widget, priv->event_window);
}
if (visible_window)
if (priv->event_window != NULL)
{
- gdk_window_set_user_data (priv->event_window, NULL);
+ gtk_widget_unregister_window (widget, priv->event_window);
gdk_window_destroy (priv->event_window);
priv->event_window = NULL;
}
priv->event_window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->event_window, widget);
+ gtk_widget_register_window (widget, priv->event_window);
}
static void
if (priv->event_window)
{
- gdk_window_set_user_data (priv->event_window, NULL);
+ gtk_widget_unregister_window (widget, priv->event_window);
gdk_window_destroy (priv->event_window);
priv->event_window = NULL;
}
window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
gtk_widget_set_window (widget, window);
- gdk_window_set_user_data (window, widget);
+ gtk_widget_register_window (widget, window);
gtk_style_context_set_background (gtk_widget_get_style_context (widget),
window);
window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
gtk_widget_set_window (widget, window);
- gdk_window_set_user_data (window, widget);
+ gtk_widget_register_window (widget, window);
gtk_widget_get_allocation (widget, &allocation);
icon_view->priv->bin_window = gdk_window_new (window,
&attributes, attributes_mask);
- gdk_window_set_user_data (icon_view->priv->bin_window, widget);
+ gtk_widget_register_window (widget, icon_view->priv->bin_window);
context = gtk_widget_get_style_context (widget);
gtk_style_context_set_background (context, icon_view->priv->bin_window);
icon_view = GTK_ICON_VIEW (widget);
- gdk_window_set_user_data (icon_view->priv->bin_window, NULL);
+ gtk_widget_unregister_window (widget, icon_view->priv->bin_window);
gdk_window_destroy (icon_view->priv->bin_window);
icon_view->priv->bin_window = NULL;
window = gdk_window_new (parent, &attributes, attributes_mask);
gtk_widget_set_window (widget, window);
- gdk_window_set_user_data (window, widget);
+ gtk_widget_register_window (widget, window);
}
static void
priv->select_info->window = gdk_window_new (gtk_widget_get_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->select_info->window, widget);
+ gtk_widget_register_window (widget, priv->select_info->window);
if (attributes_mask & GDK_WA_CURSOR)
g_object_unref (attributes.cursor);
if (priv->select_info->window == NULL)
return;
- gdk_window_set_user_data (priv->select_info->window, NULL);
+ gtk_widget_unregister_window (GTK_WIDGET (label), priv->select_info->window);
gdk_window_destroy (priv->select_info->window);
priv->select_info->window = NULL;
}
window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
gtk_widget_set_window (widget, window);
- gdk_window_set_user_data (window, widget);
+ gtk_widget_register_window (widget, window);
gtk_widget_get_allocation (widget, &allocation);
priv->bin_window = gdk_window_new (window,
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->bin_window, widget);
+ gtk_widget_register_window (widget, priv->bin_window);
gtk_style_context_set_background (gtk_widget_get_style_context (widget), priv->bin_window);
tmp_list = priv->children;
GtkLayout *layout = GTK_LAYOUT (widget);
GtkLayoutPrivate *priv = layout->priv;
- gdk_window_set_user_data (priv->bin_window, NULL);
+ gtk_widget_unregister_window (widget, priv->bin_window);
gdk_window_destroy (priv->bin_window);
priv->bin_window = NULL;
window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
gtk_widget_set_window (widget, window);
- gdk_window_set_user_data (window, widget);
+ gtk_widget_register_window (widget, window);
get_menu_padding (widget, &padding);
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
priv->view_window = gdk_window_new (window,
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->view_window, menu);
+ gtk_widget_register_window (widget, priv->view_window);
gtk_widget_get_allocation (widget, &allocation);
priv->bin_window = gdk_window_new (priv->view_window,
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->bin_window, menu);
+ gtk_widget_register_window (widget, priv->bin_window);
children = GTK_MENU_SHELL (menu)->priv->children;
while (children)
window = gdk_window_new (gtk_widget_get_root_window (GTK_WIDGET (menu)),
&attributes, attributes_mask);
- gdk_window_set_user_data (window, menu);
+ gtk_widget_register_window (GTK_WIDGET (menu), window);
gdk_window_show (window);
GdkWindow *window = g_object_get_data (G_OBJECT (menu), "gtk-menu-transfer-window");
if (window)
{
- gdk_window_set_user_data (window, NULL);
+ gtk_widget_unregister_window (GTK_WIDGET (menu), window);
gdk_window_destroy (window);
g_object_set_data (G_OBJECT (menu), I_("gtk-menu-transfer-window"), NULL);
}
menu_grab_transfer_window_destroy (menu);
- gdk_window_set_user_data (priv->view_window, NULL);
+ gtk_widget_unregister_window (widget, priv->view_window);
gdk_window_destroy (priv->view_window);
priv->view_window = NULL;
- gdk_window_set_user_data (priv->bin_window, NULL);
+ gtk_widget_unregister_window (widget, priv->bin_window);
gdk_window_destroy (priv->bin_window);
priv->bin_window = NULL;
priv->event_window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->event_window, widget);
+ gtk_widget_register_window (widget, priv->event_window);
}
static void
GtkMenuItem *menu_item = GTK_MENU_ITEM (widget);
GtkMenuItemPrivate *priv = menu_item->priv;
- gdk_window_set_user_data (priv->event_window, NULL);
+ gtk_widget_unregister_window (widget, priv->event_window);
gdk_window_destroy (priv->event_window);
priv->event_window = NULL;
window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
gtk_widget_set_window (widget, window);
- gdk_window_set_user_data (window, widget);
+ gtk_widget_register_window (widget, window);
context = gtk_widget_get_style_context (widget);
gtk_style_context_set_background (context, window);
window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask);
gtk_widget_set_window (widget, window);
- gdk_window_set_user_data (window, widget);
+ gtk_widget_register_window (widget, window);
gdk_window_set_background_pattern (window, NULL);
}
}
priv->event_window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->event_window, notebook);
+ gtk_widget_register_window (widget, priv->event_window);
}
static void
GtkNotebook *notebook = GTK_NOTEBOOK (widget);
GtkNotebookPrivate *priv = notebook->priv;
- gdk_window_set_user_data (priv->event_window, NULL);
+ gtk_widget_unregister_window (widget, priv->event_window);
gdk_window_destroy (priv->event_window);
priv->event_window = NULL;
if (priv->drag_window)
{
- gdk_window_set_user_data (priv->drag_window, NULL);
+ gtk_widget_unregister_window (widget, priv->drag_window);
gdk_window_destroy (priv->drag_window);
priv->drag_window = NULL;
}
priv->drag_window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes,
attributes_mask);
- gdk_window_set_user_data (priv->drag_window, widget);
+ gtk_widget_register_window (widget, priv->drag_window);
gdk_window_set_background_rgba (priv->drag_window, &transparent);
}
window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
gtk_widget_set_window (widget, window);
- gdk_window_set_user_data (window, widget);
+ gtk_widget_register_window (widget, window);
child = gtk_bin_get_child (bin);
if (child)
window = gdk_window_new (gtk_widget_get_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (window, overlay);
+ gtk_widget_register_window (widget, window);
gtk_style_context_set_background (gtk_widget_get_style_context (widget), window);
gtk_widget_set_parent_window (child, window);
child = children->data;
gtk_widget_set_parent_window (child->widget, NULL);
- gdk_window_set_user_data (child->window, NULL);
+ gtk_widget_unregister_window (widget, child->window);
gdk_window_destroy (child->window);
child->window = NULL;
}
{
if (child->window != NULL)
{
- gdk_window_set_user_data (child->window, NULL);
+ gtk_widget_unregister_window (GTK_WIDGET (container), child->window);
gdk_window_destroy (child->window);
}
window = gdk_window_new (gtk_widget_get_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (window, paned);
+ gtk_widget_register_window (widget, window);
gtk_style_context_set_background (gtk_widget_get_style_context (widget), window);
if (child)
priv->handle = gdk_window_new (window,
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->handle, paned);
+ gtk_widget_register_window (widget, priv->handle);
if (attributes_mask & GDK_WA_CURSOR)
g_object_unref (attributes.cursor);
if (priv->child2)
gtk_widget_set_parent_window (priv->child2, NULL);
- gdk_window_set_user_data (priv->child2_window, NULL);
+ gtk_widget_unregister_window (widget, priv->child2_window);
gdk_window_destroy (priv->child2_window);
priv->child2_window = NULL;
if (priv->child1)
gtk_widget_set_parent_window (priv->child1, NULL);
- gdk_window_set_user_data (priv->child1_window, NULL);
+ gtk_widget_unregister_window (widget, priv->child1_window);
gdk_window_destroy (priv->child1_window);
priv->child1_window = NULL;
if (priv->handle)
{
- gdk_window_set_user_data (priv->handle, NULL);
+ gtk_widget_unregister_window (widget, priv->handle);
gdk_window_destroy (priv->handle);
priv->handle = NULL;
}
path_bar->event_window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (path_bar->event_window, widget);
+ gtk_widget_register_window (widget, path_bar->event_window);
}
static void
path_bar = GTK_PATH_BAR (widget);
- gdk_window_set_user_data (path_bar->event_window, NULL);
+ gtk_widget_unregister_window (widget, path_bar->event_window);
gdk_window_destroy (path_bar->event_window);
path_bar->event_window = NULL;
if (priv->socket_window != NULL)
{
- gdk_window_set_user_data (priv->socket_window, NULL);
+ gtk_widget_unregister_window (widget, priv->socket_window);
g_object_unref (priv->socket_window);
priv->socket_window = NULL;
{
GtkWidget *widget = GTK_WIDGET (plug);
- gdk_window_set_user_data (priv->socket_window, NULL);
+ gtk_widget_unregister_window (widget, priv->socket_window);
g_object_unref (priv->socket_window);
priv->socket_window = NULL;
gtk_widget_set_window (widget, gdk_window);
}
- gdk_window_set_user_data (gdk_window, window);
+ gtk_widget_register_window (widget, gdk_window);
gtk_style_context_set_background (gtk_widget_get_style_context (widget),
gdk_window);
priv->event_window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->event_window, range);
+ gtk_widget_register_window (widget, priv->event_window);
}
static void
gtk_range_remove_step_timer (range);
- gdk_window_set_user_data (priv->event_window, NULL);
+ gtk_widget_unregister_window (widget, priv->event_window);
gdk_window_destroy (priv->event_window);
priv->event_window = NULL;
scrolled_window->priv->overshoot_window =
gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (scrolled_window->priv->overshoot_window, widget);
+ gtk_widget_register_window (widget, scrolled_window->priv->overshoot_window);
child_widget = gtk_bin_get_child (GTK_BIN (widget));
{
GtkScrolledWindow *scrolled_window = GTK_SCROLLED_WINDOW (widget);
- gdk_window_set_user_data (scrolled_window->priv->overshoot_window, NULL);
+ gtk_widget_unregister_window (widget, scrolled_window->priv->overshoot_window);
gdk_window_destroy (scrolled_window->priv->overshoot_window);
scrolled_window->priv->overshoot_window = NULL;
priv->event_window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->event_window, widget);
+ gtk_widget_register_window (widget, priv->event_window);
}
static void
if (priv->event_window)
{
- gdk_window_set_user_data (priv->event_window, NULL);
+ gtk_widget_unregister_window (widget, priv->event_window);
gdk_window_destroy (priv->event_window);
priv->event_window = NULL;
}
window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
gtk_widget_set_window (widget, window);
- gdk_window_set_user_data (window, socket);
+ gtk_widget_register_window (widget, window);
gtk_style_context_set_background (gtk_widget_get_style_context (widget),
window);
priv->down_panel = gdk_window_new (gtk_widget_get_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->down_panel, widget);
+ gtk_widget_register_window (widget, priv->down_panel);
/* create the right panel window */
attributes.x = up_allocation.x;
priv->up_panel = gdk_window_new (gtk_widget_get_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->up_panel, widget);
+ gtk_widget_register_window (widget, priv->up_panel);
return_val = FALSE;
g_signal_emit (spin_button, spinbutton_signals[OUTPUT], 0, &return_val);
if (priv->down_panel)
{
- gdk_window_set_user_data (priv->down_panel, NULL);
+ gtk_widget_unregister_window (widget, priv->down_panel);
gdk_window_destroy (priv->down_panel);
priv->down_panel = NULL;
}
if (priv->up_panel)
{
- gdk_window_set_user_data (priv->up_panel, NULL);
+ gtk_widget_unregister_window (widget, priv->up_panel);
gdk_window_destroy (priv->up_panel);
priv->up_panel = NULL;
}
priv->event_window = gdk_window_new (parent_window,
&attributes,
attributes_mask);
- gdk_window_set_user_data (priv->event_window, widget);
+ gtk_widget_register_window (widget, priv->event_window);
}
static void
if (priv->event_window != NULL)
{
- gdk_window_set_user_data (priv->event_window, NULL);
+ gtk_widget_unregister_window (widget, priv->event_window);
gdk_window_destroy (priv->event_window);
priv->event_window = NULL;
}
window = gdk_window_new (gtk_widget_get_root_window (priv->parent),
&attributes, mask);
- gdk_window_set_user_data (window, priv->parent);
+ gtk_widget_register_window (priv->parent, window);
gdk_window_set_background_rgba (window, &bg);
_gtk_text_handle_update_shape (handle, window, pos);
width / 2, 0, &x, &y);
}
+ gtk_widget_unregister_window (priv->parent, handle_window->window);
gdk_window_destroy (handle_window->window);
/* Create new window and apply old state */
window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
gtk_widget_set_window (widget, window);
- gdk_window_set_user_data (window, widget);
+ gtk_widget_register_window (widget, window);
context = gtk_widget_get_style_context (widget);
&attributes, attributes_mask);
gdk_window_show (win->window);
- gdk_window_set_user_data (win->window, win->widget);
+ gtk_widget_register_window (win->widget, win->window);
gdk_window_lower (win->window);
attributes.x = 0;
attributes_mask);
gdk_window_show (win->bin_window);
- gdk_window_set_user_data (win->bin_window, win->widget);
+ gtk_widget_register_window (win->widget, win->bin_window);
context = gtk_widget_get_style_context (widget);
state = gtk_widget_get_state_flags (widget);
NULL);
}
- gdk_window_set_user_data (win->window, NULL);
- gdk_window_set_user_data (win->bin_window, NULL);
+ gtk_widget_unregister_window (win->widget, win->window);
+ gtk_widget_unregister_window (win->widget, win->bin_window);
gdk_window_destroy (win->bin_window);
gdk_window_destroy (win->window);
win->window = NULL;
priv->event_window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->event_window, toolbar);
+ gtk_widget_register_window (widget, priv->event_window);
}
static void
if (priv->event_window)
{
- gdk_window_set_user_data (priv->event_window, NULL);
+ gtk_widget_unregister_window (widget, priv->event_window);
gdk_window_destroy (priv->event_window);
priv->event_window = NULL;
}
toolitem->priv->drag_window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (toolitem->priv->drag_window, toolitem);
+ gtk_widget_register_window (widget, toolitem->priv->drag_window);
}
static void
{
if (toolitem->priv->drag_window)
{
- gdk_window_set_user_data (toolitem->priv->drag_window, NULL);
+ gtk_widget_unregister_window (GTK_WIDGET (toolitem), toolitem->priv->drag_window);
gdk_window_destroy (toolitem->priv->drag_window);
toolitem->priv->drag_window = NULL;
}
&attributes, attributes_mask);
gtk_widget_set_window (widget, window);
- gdk_window_set_user_data (window, widget);
+ gtk_widget_register_window (widget, window);
gtk_style_context_set_background (context, window);
window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
gtk_widget_set_window (widget, window);
- gdk_window_set_user_data (window, widget);
+ gtk_widget_register_window (widget, window);
gtk_style_context_set_background (gtk_widget_get_style_context (widget),
window);
window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
gtk_widget_set_window (widget, window);
- gdk_window_set_user_data (window, widget);
+ gtk_widget_register_window (widget, window);
gtk_widget_get_allocation (widget, &allocation);
tree_view->priv->bin_window = gdk_window_new (window,
&attributes, attributes_mask);
- gdk_window_set_user_data (tree_view->priv->bin_window, widget);
+ gtk_widget_register_window (widget, tree_view->priv->bin_window);
gtk_widget_get_allocation (widget, &allocation);
tree_view->priv->header_window = gdk_window_new (window,
&attributes, attributes_mask);
- gdk_window_set_user_data (tree_view->priv->header_window, widget);
+ gtk_widget_register_window (widget, tree_view->priv->header_window);
gtk_tree_view_ensure_background (tree_view);
for (list = priv->columns; list; list = list->next)
_gtk_tree_view_column_unrealize_button (GTK_TREE_VIEW_COLUMN (list->data));
- gdk_window_set_user_data (priv->bin_window, NULL);
+ gtk_widget_unregister_window (widget, priv->bin_window);
gdk_window_destroy (priv->bin_window);
priv->bin_window = NULL;
- gdk_window_set_user_data (priv->header_window, NULL);
+ gtk_widget_unregister_window (widget, priv->header_window);
gdk_window_destroy (priv->header_window);
priv->header_window = NULL;
if (priv->drag_window)
{
- gdk_window_set_user_data (priv->drag_window, NULL);
+ gtk_widget_unregister_window (widget, priv->drag_window);
gdk_window_destroy (priv->drag_window);
priv->drag_window = NULL;
}
if (priv->drag_highlight_window)
{
- gdk_window_set_user_data (priv->drag_highlight_window, NULL);
+ gtk_widget_unregister_window (widget, priv->drag_highlight_window);
gdk_window_destroy (priv->drag_highlight_window);
priv->drag_highlight_window = NULL;
}
if (tree_view->priv->drag_highlight_window)
{
- gdk_window_set_user_data (tree_view->priv->drag_highlight_window,
- NULL);
+ gtk_widget_unregister_window (GTK_WIDGET (tree_view), tree_view->priv->drag_highlight_window);
gdk_window_destroy (tree_view->priv->drag_highlight_window);
}
attributes.event_mask = GDK_VISIBILITY_NOTIFY_MASK | GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK;
attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
tree_view->priv->drag_highlight_window = gdk_window_new (tree_view->priv->header_window, &attributes, attributes_mask);
- gdk_window_set_user_data (tree_view->priv->drag_highlight_window, GTK_WIDGET (tree_view));
+ gtk_widget_register_window (GTK_WIDGET (tree_view), tree_view->priv->drag_highlight_window);
mask_image = cairo_image_surface_create (CAIRO_FORMAT_A1, width, height);
cr = cairo_create (mask_image);
{
if (tree_view->priv->drag_highlight_window)
{
- gdk_window_set_user_data (tree_view->priv->drag_highlight_window,
- NULL);
+ gtk_widget_unregister_window (GTK_WIDGET (tree_view), tree_view->priv->drag_highlight_window);
gdk_window_destroy (tree_view->priv->drag_highlight_window);
}
attributes.height = height;
tree_view->priv->drag_highlight_window = gdk_window_new (gtk_widget_get_root_window (widget),
&attributes, attributes_mask);
- gdk_window_set_user_data (tree_view->priv->drag_highlight_window, GTK_WIDGET (tree_view));
+ gtk_widget_register_window (GTK_WIDGET (tree_view), tree_view->priv->drag_highlight_window);
mask_image = cairo_image_surface_create (CAIRO_FORMAT_A1, width, height);
{
if (tree_view->priv->drag_highlight_window)
{
- gdk_window_set_user_data (tree_view->priv->drag_highlight_window,
- NULL);
+ gtk_widget_unregister_window (GTK_WIDGET (tree_view), tree_view->priv->drag_highlight_window);
gdk_window_destroy (tree_view->priv->drag_highlight_window);
}
attributes.width = width;
attributes.height = height;
tree_view->priv->drag_highlight_window = gdk_window_new (gtk_widget_get_root_window (widget), &attributes, attributes_mask);
- gdk_window_set_user_data (tree_view->priv->drag_highlight_window, GTK_WIDGET (tree_view));
+ gtk_widget_register_window (GTK_WIDGET (tree_view), tree_view->priv->drag_highlight_window);
mask_image = cairo_image_surface_create (CAIRO_FORMAT_A1, width, height);
tree_view->priv->drag_window = gdk_window_new (tree_view->priv->header_window,
&attributes,
attributes_mask);
- gdk_window_set_user_data (tree_view->priv->drag_window, GTK_WIDGET (tree_view));
+ gtk_widget_register_window (GTK_WIDGET (tree_view), tree_view->priv->drag_window);
if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
{
attr.x = (allocation.x + (rtl ? 0 : allocation.width)) - TREE_VIEW_DRAG_WIDTH / 2;
priv->window = gdk_window_new (_gtk_tree_view_get_header_window (tree_view),
&attr, attributes_mask);
- gdk_window_set_user_data (priv->window, tree_view);
+ gtk_widget_register_window (GTK_WIDGET (tree_view), priv->window);
gtk_tree_view_column_update_button (column);
priv = column->priv;
g_return_if_fail (priv->window != NULL);
- gdk_window_set_user_data (priv->window, NULL);
+ gtk_widget_unregister_window (GTK_WIDGET (priv->tree_view), priv->window);
gdk_window_destroy (priv->window);
priv->window = NULL;
}
window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
gtk_widget_set_window (widget, window);
- gdk_window_set_user_data (window, viewport);
+ gtk_widget_register_window (widget, window);
viewport_get_view_allocation (viewport, &view_allocation);
priv->view_window = gdk_window_new (window,
&attributes, attributes_mask);
- gdk_window_set_user_data (priv->view_window, viewport);
+ gtk_widget_register_window (widget, priv->view_window);
attributes.x = - gtk_adjustment_get_value (hadjustment);
attributes.y = - gtk_adjustment_get_value (vadjustment);
attributes.event_mask = event_mask;
priv->bin_window = gdk_window_new (priv->view_window, &attributes, attributes_mask);
- gdk_window_set_user_data (priv->bin_window, viewport);
+ gtk_widget_register_window (widget, priv->bin_window);
child = gtk_bin_get_child (bin);
if (child)
GtkViewport *viewport = GTK_VIEWPORT (widget);
GtkViewportPrivate *priv = viewport->priv;
- gdk_window_set_user_data (priv->view_window, NULL);
+ gtk_widget_unregister_window (widget, priv->view_window);
gdk_window_destroy (priv->view_window);
priv->view_window = NULL;
- gdk_window_set_user_data (priv->bin_window, NULL);
+ gtk_widget_unregister_window (widget, priv->bin_window);
gdk_window_destroy (priv->bin_window);
priv->bin_window = NULL;
* GTK_NO_WINDOW flag being set).
*/
GdkWindow *window;
+ GList *registered_windows;
/* The widget's parent */
GtkWidget *parent;
if (gtk_widget_get_has_window (widget))
{
- gdk_window_set_user_data (priv->window, NULL);
+ gtk_widget_unregister_window (widget, priv->window);
gdk_window_destroy (priv->window);
priv->window = NULL;
}
}
}
+/**
+ * gtk_widget_register_window:
+ * @widget: a #GtkWidget
+ * @window: a #GdkWindow
+ *
+ * Registers a #GdkWindow with the widget and sets it up so that
+ * the widget recieves events for it. Call gtk_widget_unregister_window()
+ * when destroying the window.
+ *
+ * Before 3.8 you needed to call gdk_window_set_user_data() directly to set
+ * this up. This is now deprecated and you should use gtk_widget_register_window()
+ * instead. Old code will keep working as is, although some new features like
+ * transparency might not work perfectly.
+ *
+ * Since: 3.8
+ */
+void
+gtk_widget_register_window (GtkWidget *widget,
+ GdkWindow *window)
+{
+ GtkWidgetPrivate *priv;
+ gpointer user_data;
+
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+ g_return_if_fail (GDK_IS_WINDOW (window));
+
+ gdk_window_get_user_data (window, &user_data);
+ g_assert (user_data == NULL);
+
+ priv = widget->priv;
+
+ gdk_window_set_user_data (window, widget);
+ priv->registered_windows = g_list_prepend (priv->registered_windows, window);
+}
+
+/**
+ * gtk_widget_unregister_window:
+ * @widget: a #GtkWidget
+ * @window: a #GdkWindow
+ *
+ * Unregisters a #GdkWindow from the widget that was previously set up with
+ * gtk_widget_register_window(). You need to call this when the window is
+ * no longer used by the widget, such as when you destroy it.
+ *
+ * Since: 3.8
+ */
+void
+gtk_widget_unregister_window (GtkWidget *widget,
+ GdkWindow *window)
+{
+ GtkWidgetPrivate *priv;
+ gpointer user_data;
+
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+ g_return_if_fail (GDK_IS_WINDOW (window));
+
+ priv = widget->priv;
+
+ gdk_window_get_user_data (window, &user_data);
+ g_assert (user_data == widget);
+ gdk_window_set_user_data (window, NULL);
+ priv->registered_windows = g_list_remove (priv->registered_windows, window);
+}
+
/**
* gtk_widget_get_window:
* @widget: a #GtkWidget
void gtk_widget_set_window (GtkWidget *widget,
GdkWindow *window);
GdkWindow * gtk_widget_get_window (GtkWidget *widget);
+GDK_AVAILABLE_IN_3_8
+void gtk_widget_register_window (GtkWidget *widget,
+ GdkWindow *window);
+GDK_AVAILABLE_IN_3_8
+void gtk_widget_unregister_window (GtkWidget *widget,
+ GdkWindow *window);
int gtk_widget_get_allocated_width (GtkWidget *widget);
int gtk_widget_get_allocated_height (GtkWidget *widget);
if (embed_widget->parent_window != NULL)
{
- gdk_window_set_user_data (embed_widget->parent_window, NULL);
+ gtk_widget_unregister_window (widget, embed_widget->parent_window);
g_object_unref (embed_widget->parent_window);
embed_widget->parent_window = NULL;
}
gdk_window = gdk_window_new (embed_widget->parent_window,
&attributes, attributes_mask);
gtk_widget_set_window (widget, gdk_window);
- gdk_window_set_user_data (gdk_window, window);
+ gtk_widget_register_window (widget, gdk_window);
embed_widget->old_window_procedure = (gpointer)
SetWindowLongPtrW(GDK_WINDOW_HWND (gdk_window),
gdk_window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
gtk_widget_set_window (widget, gdk_window);
- gdk_window_set_user_data (gdk_window, widget);
+ gtk_widget_register_window (widget, gdk_window);
gtk_style_context_set_background (gtk_widget_get_style_context (widget), gdk_window);
gdk_window_enable_synchronized_configure (gdk_window);
- gdk_window_set_user_data (gdk_window, window);
+ gtk_widget_register_window (widget, gdk_window);
context = gtk_widget_get_style_context (widget);
gtk_style_context_set_background (context, gdk_window);
attributes_mask);
gdk_window_set_background_rgba (priv->grip_window, &transparent);
- gdk_window_set_user_data (priv->grip_window, widget);
+ gtk_widget_register_window (widget, priv->grip_window);
gdk_window_raise (priv->grip_window);
{
GtkWindowPrivate *priv = window->priv;
- gdk_window_set_user_data (priv->grip_window, NULL);
+ gtk_widget_unregister_window (GTK_WIDGET (window), priv->grip_window);
gdk_window_destroy (priv->grip_window);
priv->grip_window = NULL;
update_grip_visibility (window);